diff options
Diffstat (limited to 'app/[lng]/partners/pq/page.tsx')
| -rw-r--r-- | app/[lng]/partners/pq/page.tsx | 62 |
1 files changed, 54 insertions, 8 deletions
diff --git a/app/[lng]/partners/pq/page.tsx b/app/[lng]/partners/pq/page.tsx index 8ad23f6e..42c88b21 100644 --- a/app/[lng]/partners/pq/page.tsx +++ b/app/[lng]/partners/pq/page.tsx @@ -3,11 +3,16 @@ import { authOptions } from "@/app/api/auth/[...nextauth]/route" import * as React from "react" import { Shell } from "@/components/shell" import { Skeleton } from "@/components/ui/skeleton" -import { getPQDataByVendorId } from "@/lib/pq/service" +import { getPQDataByVendorId, getPQProjectsByVendorId } from "@/lib/pq/service" import { PQInputTabs } from "@/components/pq/pq-input-tabs" +import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs" -export default async function PQInputPage() { +export default async function PQInputPage({ + searchParams +}: { + searchParams: { projectId?: string } +}) { // 세션 const session = await getServerSession(authOptions) // 예: 세션에서 vendorId 가져오기 @@ -15,25 +20,66 @@ export default async function PQInputPage() { const vendorId = 17 // 임시 const idAsNumber = Number(vendorId) - // 1) 서버에서 PQ 데이터 조회 (groupName별로 묶인 구조) - const pqData = await getPQDataByVendorId(idAsNumber) + const projectId = searchParams.projectId ? parseInt(searchParams.projectId, 10) : undefined + + // 벤더에게 요청된 프로젝트 PQ 목록 가져오기 (탭 표시용) + const projectPQs = await getPQProjectsByVendorId(idAsNumber) + + // PQ 데이터 조회 + const pqData = await getPQDataByVendorId(idAsNumber, projectId) + + // 현재 프로젝트 정보 (있다면) + const currentProject = projectId + ? projectPQs.find(p => p.projectId === projectId) + : null return ( <Shell className="gap-2"> + {/* 헤더 - 프로젝트 정보 포함 */} <div className="space-y-2"> <h2 className="text-2xl font-bold tracking-tight"> Pre-Qualification Check Sheet + {currentProject && ( + <span className="ml-2 text-muted-foreground"> + - {currentProject.projectCode} + </span> + )} </h2> <p className="text-muted-foreground"> - PQ에 적절한 응답을 제출하시기 바랍니다. 진행 중 문의가 있으면 담당자에게 연락바랍니다. + PQ에 적절한 응답을 제출하시기 바랍니다. </p> </div> - {/* 클라이언트 탭 UI 로드 (Suspense는 여기서는 크게 필요치 않을 수도 있음) */} + {/* 일반/프로젝트 PQ 선택 탭 */} + {projectPQs.length > 0 && ( + <div className="border-b"> + <Tabs defaultValue={projectId ? `project-${projectId}` : "general"}> + <TabsList> + <TabsTrigger value="general" asChild> + <a href="/partners/pq">일반 PQ</a> + </TabsTrigger> + + {projectPQs.map(project => ( + <TabsTrigger key={project.projectId} value={`project-${project.projectId}`} asChild> + <a href={`/partners/pq?projectId=${project.projectId}`}> + {project.projectCode} + </a> + </TabsTrigger> + ))} + </TabsList> + </Tabs> + </div> + )} + + {/* PQ 입력 탭 */} <React.Suspense fallback={<Skeleton className="h-7 w-52" />}> - <PQInputTabs data={pqData} vendorId={idAsNumber} /> + <PQInputTabs + data={pqData} + vendorId={idAsNumber} + projectId={projectId} + projectData={currentProject} + /> </React.Suspense> - </Shell> ) }
\ No newline at end of file |
